package com.yiren.dbaa.module.exam.api;

import com.yiren.backstage.currency.bean.CarStateBean;
import com.yiren.backstage.currency.bean.GpsInfoBean;
import com.yiren.backstage.currency.entity.GradeStandardEntity;
import com.yiren.backstage.currency.entity.ProjectEntity;
import com.yiren.backstage.currency.enums.TaskStateEnum;
import com.yiren.dbaa.module.exam.bean.DriveDataBean;
import com.yiren.dbaa.module.exam.bean.DriveRecordBean;
import com.yiren.dbaa.module.exam.view.id.ExamMapId;
import com.yiren.dbaa.module.exam.bean.record.CarInfoRecordBean;
import com.yiren.dbaa.module.exam.bean.record.CarRecordPointBean;
import com.yiren.dbaa.module.exam.bean.record.ExecutingPointBean;

import java.util.List;

/**
 * Created by WANGRONGXIANG
 * on 2022/5/16
 * Describe 练车记录上传
 */
public interface IExamRecordApi {

    /**
     * 项目开始和结束语音
     */
    void setVoiceTxt(String voiceTxt);

    /**
     * 上传当前的项目信息
     */
    void uploadCurProjectPoint(ExecutingPointBean executingPointBean, boolean isGjdShow, String lineId, String lineSessionId, String stuId);

    /**
     * 添加练车评分记录
     */
    void addCarGradeRecord(String key, GradeStandardEntity gradeStandardEntity, List<ExecutingPointBean> executingPoints);

    /**
     * 删除记录评分
     */
    void deleteGradeRecord(String projectId, String key, List<ExecutingPointBean> executingPoints);

    /**
     * 添加练车点位记录
     */
    CarRecordPointBean createRecordPointBean(CarStateBean carState, GpsInfoBean gps, ExamMapId idMap);

    /**
     * 添加练车记录数据
     */
    void addPracticeData(List<ExecutingPointBean> executingPointBeans, CarStateBean carState, GpsInfoBean gps, ExamMapId idMap);

    /**
     * 创建或者上传车辆练车轨迹记录（用于项目状态改变时候）
     */
    void create2UploadCarRecord(List<ExecutingPointBean> executingPoints, ProjectEntity projectEntity, TaskStateEnum taskState, ExamMapId idMap, String lineId, String lineSessionId, String stuId);

    /**
     * 结束考试上传项目记录
     */
    void endExamUploadCarRecord(List<ExecutingPointBean> executingPoints, boolean isGjdShow, String lineId, String lineSessionId, String stuId);

    /**
     * 上传练车记录调用接口
     */
    void uploadCarRecord(CarInfoRecordBean carInfoRecordBean);

    /**
     * 上传开始考试记录
     */
    void uploadStartExamData(DriveRecordBean startRecord);

    /**
     * 上传结束考试记录
     */
    void uploadEndExamData(DriveDataBean driveData);
}
